<?php
namespace data\extend;
class H {
    /*
     * 字符串防SQL注入编码，对GET,POST,COOKIE的数据进行预处理
     * @param  $input 要处理字符串或者数组
     * @param  $urlencode 是否要URL编码
     */
    private static function escape($input, $urldecode = 0) {
        if(is_array($input)){
            foreach($input as $k=>$v){
                $input[$k]=self::escape($v,$urldecode);
            }
        }else{
            $input=trim($input);
            if ($urldecode == 1) {
                $input = urldecode($input);
            }
            // PHP版本大于5.4.0，直接转义字符
            if (strnatcasecmp(PHP_VERSION, '5.4.0') >= 0) {
                $input = addslashes($input);
            } else {
                // 魔法转义没开启，自动加反斜杠
                if (!get_magic_quotes_gpc()) {
                    $input = addslashes($input);
                }
            }
        }
        //防止最后一个反斜杠引起SQL错误如 'abc\'
        if(substr($input,-1,1)=='\\') $input=$input."'";
        return $input;
    }

    //处理XSS，$input=$_COOKIE,$_GET,$_POST
    public static function sqlxss($input){
        if(is_array($input)){
            foreach($input as $k=>$v){
                $k=self::sqlxss($k);
                $input[$k]=self::sqlxss($v);
            }
        }else{
            $input=self::escape($input,1);
            $input=htmlspecialchars($input,ENT_QUOTES);
        }
        return $input;
    }
    // 将时间转换成几分钟前
    public static function time_tran($the_time) {
        $now_time = date("Y-m-d H:i:s", time());
        $now_time = strtotime($now_time);
        $show_time = strtotime($the_time);
        $dur = $now_time - $show_time;
        if ($dur < 0) {
            return $the_time;
        } else {
            if ($dur < 60) {
                return $dur . '秒前';
            } else {
                if ($dur < 3600) {
                    return floor($dur / 60) . '分钟前';
                } else {
                    if ($dur < 86400) {
                        return floor($dur / 3600) . '小时前';
                    } else {
                        if ($dur < 259200) {//3天内
                            return floor($dur / 86400) . '天前';
                        } else {
                            return date('m-d',$show_time);
                        }
                    }
                }
            }
        }
    }

}
